#pragma once
#include "EpilTokenStream.h"
#include "EpilOperator.h"


class EpilParserUtilities
{
public:
	static bool							IsBlockFollow( const EpilTokenStream & tokens );
	static bool							IsUnaryOperator( const EpilToken & token );
	static bool							IsBinaryOperator( const EpilToken & token );
	static int							GetUnaryOperatorPrecedence( const EpilToken & token );
	static int							GetBinaryOperatorPrecedence( const EpilToken & token );
	static EpilUnaryOperator			TranslateUnaryOperator( const EpilToken & token );
	static EpilBinaryOperator			TranslateBinaryOperator( const EpilToken & token );
	static int							ParseDecimal( const tstring & str );
	static double						ParseDouble( const tstring & str );
	static int							ParseOctal( const tstring & str );
	static int							ParseHexadecimal( const tstring & str );
	static double						ParseScientific( const tstring & str );
};